﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

namespace Botonet
{
    public partial class evaluacion : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

            if ((Session["Tipo"] == null) || (((String[])Session["Grupos"]).Length < 1) || (((String[])Session["Grupos"])[0]==""))
            {
                Response.Redirect("index.aspx", true);
            }
            else if (((Session["Tipo"].ToString() == "user") || (Session["Tipo"].ToString() == "groupAdmin")) && Session["Nombre"].ToString() != "")
            {
                if (!IsPostBack)
                {
                    try
                    {
                        DateTime fecha = DateTime.Now;
                        Session["fecha"] = fecha.ToString("dd/MM/yyyy HH:mm");
                        lblReloj.Text = Session["fecha"].ToString();
                        lblUsuario.Text = Session["Nombre"].ToString();

                        cargaUsuarios();
                    }
                    catch (Exception ex)
                    {
                        lblMensajes.Text = "Se produjo el error: " + ex.Message;
                    }
                }
            }
            else
            {
                Response.Redirect("index.aspx", false);
            }
        }

        protected void btnCalificar_Click(object sender, EventArgs e)
        {
            string cal1, cal2;


            cal1 = seleccion_calificacion("1");
            cal2 = seleccion_calificacion("2");


            if ((cal1 != "-1") && (cal2 != "-1") && (ddlSelCompañero.SelectedValue != "0"))
            {
                String ruta = "Data Source=localhost;Initial Catalog=botonet;Integrated Security=True";
                SqlConnection cn;
                SqlDataAdapter adaptador;
                DataSet ds;
                string carga, carga2;

                carga = "INSERT INTO Evaluaciones (id_Grupo, Email_Emisor, Email_Calificado, Fecha,id_TipoEvaluacion,Calificacion,Comentario) VALUES (" + ddlGrupos.SelectedValue + ",'";
                carga += Session["Email"].ToString() + "','" + ddlSelCompañero.SelectedValue + "','" + DateTime.Parse(Session["fecha"].ToString()).Date.ToShortDateString() + "', 1 ,'" + cal1 + "' ,'" + idComentario.Text + "')";
                carga2 = "INSERT INTO Evaluaciones (id_Grupo, Email_Emisor, Email_Calificado, Fecha,id_TipoEvaluacion,Calificacion,Comentario) VALUES (" + ddlGrupos.SelectedValue +",'";
                carga2 += Session["Email"].ToString() + "','" + ddlSelCompañero.SelectedValue + "','" + DateTime.Parse(Session["fecha"].ToString()).Date.ToShortDateString() + "', 2 ,'" + cal2 + "' ,'" + idComentario.Text + "')";
                cn = new SqlConnection(ruta);
                try
                {
                    cn.Open();
                    ds = new DataSet();
                    adaptador = new SqlDataAdapter(carga, cn);
                    adaptador.Fill(ds, "Evaluaciones");
                    adaptador = new SqlDataAdapter(carga2, cn);
                    adaptador.Fill(ds, "Evaluaciones");
                    idComentario.Text = "";
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "dialog", "<script type=\"text/javascript\">msg='<div id=\"txtMensaje\">Evaluaci&oacute;n existosa</div>';</script>");
                    UsuariosSinVotar();
                }
                catch (Exception ex)
                {

                    Page.ClientScript.RegisterStartupScript(this.GetType(), "dialog", "<script type=\"text/javascript\">msg='<div id=\"txtMensaje\">Error al procesar la petici&oacute;n.</div>';</script> ");
                }
            }
            else
            {
                Page.ClientScript.RegisterStartupScript(this.GetType(), "dialog", "<script type=\"text/javascript\">msg='<div id=\"txtMensaje\">Seleccione un usuario y califique ambos aspectos.</div>';</script> ");
            }
        }

        private string seleccion_calificacion(string strEval)
        {

            string valor = "-1";
            switch (strEval)
            {
                case "1":
                    if (rbMuyBuena.Checked)
                        valor = "10";
                    if (rbBuena.Checked)
                        valor = "8";
                    if (rbRegular.Checked)
                        valor = "6";
                    if (rbMala.Checked)
                        valor = "4";
                    if (rbPesima.Checked)
                        valor = "1";
                    break;
                case "2":
                    if (rbMuyBuena2.Checked)
                        valor = "10";
                    if (rbBuena2.Checked)
                        valor = "8";
                    if (rbRegular2.Checked)
                        valor = "6";
                    if (rbMala2.Checked)
                        valor = "4";
                    if (rbPesima2.Checked)
                        valor = "1";
                    break;
                default:
                    break;
            }
            return valor;
        }
        private bool cargaUsuarios()
        {
            bool ok = false;
            string a= Session["Email"].ToString();
            string consulta = "SELECT Grupos.* FROM Grupos LEFT JOIN Usuarios_Grupos ON Grupos.id_Grupos = Usuarios_Grupos.Grupo_Usuario ";
            consulta += " WHERE ";
            consulta += "Usuarios_Grupos.Email_Usuario = '" + a + "' ";
            cDB DB = new cDB();
            ListItem itemGrupo;
            if (DB.execQuery(consulta, "Grupos"))
            {
                ddlGrupos.Items.Clear();
                itemGrupo = new ListItem("(Grupos)", "0");
                ddlGrupos.Items.Add(itemGrupo);
                Application["Grupos"] = DB.DS.Tables["Grupos"].Copy();

                foreach (System.Data.DataRow FilaGrupo in DB.DS.Tables["Grupos"].Rows)
                {
                    itemGrupo = new ListItem(FilaGrupo["Nombre_Grupos"].ToString(), FilaGrupo["id_Grupos"].ToString());

                    ddlGrupos.Items.Add(itemGrupo);
                }

                ok = true;
            }
            return ok;
        }

        protected void ddlGrupos_SelectedIndexChanged(object sender, EventArgs e)
        {
            UsuariosSinVotar();
        }
        protected void UsuariosSinVotar()
        {
            cDB DB = new cDB();
            string consulta3 = "SELECT * FROM (SELECT * FROM Usuarios INNER JOIN Usuarios_Grupos ON Usuarios.Email= Usuarios_Grupos.Email_Usuario WHERE Usuarios_Grupos.Grupo_Usuario = " + ddlGrupos.SelectedItem.Value + " ) AS Users LEFT JOIN Evaluaciones ON Evaluaciones.Email_Calificado = Users.Email AND Evaluaciones.Email_Emisor = '" + Session["Email"].ToString() + "' AND Evaluaciones.Fecha = '" + DateTime.Parse(Session["fecha"].ToString()).Date.ToShortDateString() + "'/*FECHA DE VOTACION*/ WHERE Evaluaciones.Fecha is NULL  AND Users.Email NOT IN ('admin@botonet.com','" + Session["Email"].ToString() + "')";
            if (DB.execQuery(consulta3, "Usuarios"))
            {
                ddlSelCompañero.Items.Clear();
                ListItem item = new ListItem("(Compañeros)", "0");
                ddlSelCompañero.Items.Add(item);
                foreach (DataRow dr in DB.DS.Tables["Usuarios"].Rows)
                {
                    item = new ListItem(dr["Nombre"].ToString() + " " + dr["Apellido"].ToString(), dr["Email"].ToString());
                    if (dr["Nombre"].ToString() != Session["Nombre"].ToString())
                    {
                        ddlSelCompañero.Items.Add(item);
                    }
                }
            }
        }
    }
}
